package scerbak.ui.contentassist.antlr.internal;

// Hack: Use our own Lexer superclass by means of import. 
// Currently there is no other way to specify the superclass for the lexer.
import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Lexer;


import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalDatamodelLexer extends Lexer {
    public static final int RULE_ID=4;
    public static final int RULE_UPCHAR=8;
    public static final int RULE_ANY_OTHER=14;
    public static final int Tokens=25;
    public static final int T24=24;
    public static final int EOF=-1;
    public static final int RULE_SL_COMMENT=12;
    public static final int T23=23;
    public static final int T22=22;
    public static final int T21=21;
    public static final int T20=20;
    public static final int RULE_ML_COMMENT=11;
    public static final int RULE_EMPTY=6;
    public static final int RULE_STRING=10;
    public static final int RULE_UPID=5;
    public static final int RULE_INT=9;
    public static final int RULE_CHAR=7;
    public static final int RULE_WS=13;
    public static final int T15=15;
    public static final int T16=16;
    public static final int T17=17;
    public static final int T18=18;
    public static final int T19=19;
    public InternalDatamodelLexer() {;} 
    public InternalDatamodelLexer(CharStream input) {
        super(input);
    }
    public String getGrammarFileName() { return "../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g"; }

    // $ANTLR start T15
    public final void mT15() throws RecognitionException {
        try {
            int _type = T15;
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:10:5: ( ',' )
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:10:7: ','
            {
            match(','); 

            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T15

    // $ANTLR start T16
    public final void mT16() throws RecognitionException {
        try {
            int _type = T16;
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:11:5: ( '(' )
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:11:7: '('
            {
            match('('); 

            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T16

    // $ANTLR start T17
    public final void mT17() throws RecognitionException {
        try {
            int _type = T17;
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:12:5: ( ')' )
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:12:7: ')'
            {
            match(')'); 

            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T17

    // $ANTLR start T18
    public final void mT18() throws RecognitionException {
        try {
            int _type = T18;
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:13:5: ( '/' )
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:13:7: '/'
            {
            match('/'); 

            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T18

    // $ANTLR start T19
    public final void mT19() throws RecognitionException {
        try {
            int _type = T19;
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:14:5: ( 'package' )
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:14:7: 'package'
            {
            match("package"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T19

    // $ANTLR start T20
    public final void mT20() throws RecognitionException {
        try {
            int _type = T20;
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:15:5: ( ':' )
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:15:7: ':'
            {
            match(':'); 

            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T20

    // $ANTLR start T21
    public final void mT21() throws RecognitionException {
        try {
            int _type = T21;
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:16:5: ( '-' )
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:16:7: '-'
            {
            match('-'); 

            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T21

    // $ANTLR start T22
    public final void mT22() throws RecognitionException {
        try {
            int _type = T22;
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:17:5: ( 'import' )
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:17:7: 'import'
            {
            match("import"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T22

    // $ANTLR start T23
    public final void mT23() throws RecognitionException {
        try {
            int _type = T23;
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:18:5: ( '.' )
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:18:7: '.'
            {
            match('.'); 

            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T23

    // $ANTLR start T24
    public final void mT24() throws RecognitionException {
        try {
            int _type = T24;
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:19:5: ( '.*' )
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:19:7: '.*'
            {
            match(".*"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T24

    // $ANTLR start RULE_EMPTY
    public final void mRULE_EMPTY() throws RecognitionException {
        try {
            int _type = RULE_EMPTY;
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1135:12: ( 'Should be empty!' )
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1135:14: 'Should be empty!'
            {
            match("Should be empty!"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end RULE_EMPTY

    // $ANTLR start RULE_CHAR
    public final void mRULE_CHAR() throws RecognitionException {
        try {
            int _type = RULE_CHAR;
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1137:11: ( 'a' .. 'z' )
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1137:13: 'a' .. 'z'
            {
            matchRange('a','z'); 

            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end RULE_CHAR

    // $ANTLR start RULE_UPCHAR
    public final void mRULE_UPCHAR() throws RecognitionException {
        try {
            int _type = RULE_UPCHAR;
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1139:13: ( 'A' .. 'Z' )
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1139:15: 'A' .. 'Z'
            {
            matchRange('A','Z'); 

            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end RULE_UPCHAR

    // $ANTLR start RULE_UPID
    public final void mRULE_UPID() throws RecognitionException {
        try {
            int _type = RULE_UPID;
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1141:11: ( RULE_UPCHAR RULE_ID )
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1141:13: RULE_UPCHAR RULE_ID
            {
            mRULE_UPCHAR(); 
            mRULE_ID(); 

            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end RULE_UPID

    // $ANTLR start RULE_ID
    public final void mRULE_ID() throws RecognitionException {
        try {
            int _type = RULE_ID;
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1143:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* )
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1143:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
            {
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1143:11: ( '^' )?
            int alt1=2;
            int LA1_0 = input.LA(1);

            if ( (LA1_0=='^') ) {
                alt1=1;
            }
            switch (alt1) {
                case 1 :
                    // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1143:11: '^'
                    {
                    match('^'); 

                    }
                    break;

            }

            if ( (input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
                input.consume();

            }
            else {
                MismatchedSetException mse =
                    new MismatchedSetException(null,input);
                recover(mse);    throw mse;
            }

            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1143:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( ((LA2_0>='0' && LA2_0<='9')||(LA2_0>='A' && LA2_0<='Z')||LA2_0=='_'||(LA2_0>='a' && LA2_0<='z')) ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:
            	    {
            	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
            	        input.consume();

            	    }
            	    else {
            	        MismatchedSetException mse =
            	            new MismatchedSetException(null,input);
            	        recover(mse);    throw mse;
            	    }


            	    }
            	    break;

            	default :
            	    break loop2;
                }
            } while (true);


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end RULE_ID

    // $ANTLR start RULE_INT
    public final void mRULE_INT() throws RecognitionException {
        try {
            int _type = RULE_INT;
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1145:10: ( ( '0' .. '9' )+ )
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1145:12: ( '0' .. '9' )+
            {
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1145:12: ( '0' .. '9' )+
            int cnt3=0;
            loop3:
            do {
                int alt3=2;
                int LA3_0 = input.LA(1);

                if ( ((LA3_0>='0' && LA3_0<='9')) ) {
                    alt3=1;
                }


                switch (alt3) {
            	case 1 :
            	    // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1145:13: '0' .. '9'
            	    {
            	    matchRange('0','9'); 

            	    }
            	    break;

            	default :
            	    if ( cnt3 >= 1 ) break loop3;
                        EarlyExitException eee =
                            new EarlyExitException(3, input);
                        throw eee;
                }
                cnt3++;
            } while (true);


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end RULE_INT

    // $ANTLR start RULE_STRING
    public final void mRULE_STRING() throws RecognitionException {
        try {
            int _type = RULE_STRING;
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1147:13: ( ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) )
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1147:15: ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
            {
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1147:15: ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
            int alt6=2;
            int LA6_0 = input.LA(1);

            if ( (LA6_0=='\"') ) {
                alt6=1;
            }
            else if ( (LA6_0=='\'') ) {
                alt6=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("1147:15: ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )", 6, 0, input);

                throw nvae;
            }
            switch (alt6) {
                case 1 :
                    // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1147:16: '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"'
                    {
                    match('\"'); 
                    // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1147:20: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )*
                    loop4:
                    do {
                        int alt4=3;
                        int LA4_0 = input.LA(1);

                        if ( (LA4_0=='\\') ) {
                            alt4=1;
                        }
                        else if ( ((LA4_0>='\u0000' && LA4_0<='!')||(LA4_0>='#' && LA4_0<='[')||(LA4_0>=']' && LA4_0<='\uFFFE')) ) {
                            alt4=2;
                        }


                        switch (alt4) {
                    	case 1 :
                    	    // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1147:21: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' )
                    	    {
                    	    match('\\'); 
                    	    if ( input.LA(1)=='\"'||input.LA(1)=='\''||input.LA(1)=='\\'||input.LA(1)=='b'||input.LA(1)=='f'||input.LA(1)=='n'||input.LA(1)=='r'||input.LA(1)=='t' ) {
                    	        input.consume();

                    	    }
                    	    else {
                    	        MismatchedSetException mse =
                    	            new MismatchedSetException(null,input);
                    	        recover(mse);    throw mse;
                    	    }


                    	    }
                    	    break;
                    	case 2 :
                    	    // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1147:62: ~ ( ( '\\\\' | '\"' ) )
                    	    {
                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
                    	        input.consume();

                    	    }
                    	    else {
                    	        MismatchedSetException mse =
                    	            new MismatchedSetException(null,input);
                    	        recover(mse);    throw mse;
                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop4;
                        }
                    } while (true);

                    match('\"'); 

                    }
                    break;
                case 2 :
                    // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1147:82: '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\''
                    {
                    match('\''); 
                    // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1147:87: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )*
                    loop5:
                    do {
                        int alt5=3;
                        int LA5_0 = input.LA(1);

                        if ( (LA5_0=='\\') ) {
                            alt5=1;
                        }
                        else if ( ((LA5_0>='\u0000' && LA5_0<='&')||(LA5_0>='(' && LA5_0<='[')||(LA5_0>=']' && LA5_0<='\uFFFE')) ) {
                            alt5=2;
                        }


                        switch (alt5) {
                    	case 1 :
                    	    // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1147:88: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\"' | '\\'' | '\\\\' )
                    	    {
                    	    match('\\'); 
                    	    if ( input.LA(1)=='\"'||input.LA(1)=='\''||input.LA(1)=='\\'||input.LA(1)=='b'||input.LA(1)=='f'||input.LA(1)=='n'||input.LA(1)=='r'||input.LA(1)=='t' ) {
                    	        input.consume();

                    	    }
                    	    else {
                    	        MismatchedSetException mse =
                    	            new MismatchedSetException(null,input);
                    	        recover(mse);    throw mse;
                    	    }


                    	    }
                    	    break;
                    	case 2 :
                    	    // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1147:129: ~ ( ( '\\\\' | '\\'' ) )
                    	    {
                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
                    	        input.consume();

                    	    }
                    	    else {
                    	        MismatchedSetException mse =
                    	            new MismatchedSetException(null,input);
                    	        recover(mse);    throw mse;
                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop5;
                        }
                    } while (true);

                    match('\''); 

                    }
                    break;

            }


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end RULE_STRING

    // $ANTLR start RULE_ML_COMMENT
    public final void mRULE_ML_COMMENT() throws RecognitionException {
        try {
            int _type = RULE_ML_COMMENT;
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1149:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1149:19: '/*' ( options {greedy=false; } : . )* '*/'
            {
            match("/*"); 

            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1149:24: ( options {greedy=false; } : . )*
            loop7:
            do {
                int alt7=2;
                int LA7_0 = input.LA(1);

                if ( (LA7_0=='*') ) {
                    int LA7_1 = input.LA(2);

                    if ( (LA7_1=='/') ) {
                        alt7=2;
                    }
                    else if ( ((LA7_1>='\u0000' && LA7_1<='.')||(LA7_1>='0' && LA7_1<='\uFFFE')) ) {
                        alt7=1;
                    }


                }
                else if ( ((LA7_0>='\u0000' && LA7_0<=')')||(LA7_0>='+' && LA7_0<='\uFFFE')) ) {
                    alt7=1;
                }


                switch (alt7) {
            	case 1 :
            	    // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1149:52: .
            	    {
            	    matchAny(); 

            	    }
            	    break;

            	default :
            	    break loop7;
                }
            } while (true);

            match("*/"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end RULE_ML_COMMENT

    // $ANTLR start RULE_SL_COMMENT
    public final void mRULE_SL_COMMENT() throws RecognitionException {
        try {
            int _type = RULE_SL_COMMENT;
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1151:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1151:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
            {
            match("//"); 

            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1151:24: (~ ( ( '\\n' | '\\r' ) ) )*
            loop8:
            do {
                int alt8=2;
                int LA8_0 = input.LA(1);

                if ( ((LA8_0>='\u0000' && LA8_0<='\t')||(LA8_0>='\u000B' && LA8_0<='\f')||(LA8_0>='\u000E' && LA8_0<='\uFFFE')) ) {
                    alt8=1;
                }


                switch (alt8) {
            	case 1 :
            	    // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1151:24: ~ ( ( '\\n' | '\\r' ) )
            	    {
            	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFE') ) {
            	        input.consume();

            	    }
            	    else {
            	        MismatchedSetException mse =
            	            new MismatchedSetException(null,input);
            	        recover(mse);    throw mse;
            	    }


            	    }
            	    break;

            	default :
            	    break loop8;
                }
            } while (true);

            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1151:40: ( ( '\\r' )? '\\n' )?
            int alt10=2;
            int LA10_0 = input.LA(1);

            if ( (LA10_0=='\n'||LA10_0=='\r') ) {
                alt10=1;
            }
            switch (alt10) {
                case 1 :
                    // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1151:41: ( '\\r' )? '\\n'
                    {
                    // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1151:41: ( '\\r' )?
                    int alt9=2;
                    int LA9_0 = input.LA(1);

                    if ( (LA9_0=='\r') ) {
                        alt9=1;
                    }
                    switch (alt9) {
                        case 1 :
                            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1151:41: '\\r'
                            {
                            match('\r'); 

                            }
                            break;

                    }

                    match('\n'); 

                    }
                    break;

            }


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end RULE_SL_COMMENT

    // $ANTLR start RULE_WS
    public final void mRULE_WS() throws RecognitionException {
        try {
            int _type = RULE_WS;
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1153:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1153:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
            {
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1153:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
            int cnt11=0;
            loop11:
            do {
                int alt11=2;
                int LA11_0 = input.LA(1);

                if ( ((LA11_0>='\t' && LA11_0<='\n')||LA11_0=='\r'||LA11_0==' ') ) {
                    alt11=1;
                }


                switch (alt11) {
            	case 1 :
            	    // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:
            	    {
            	    if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||input.LA(1)=='\r'||input.LA(1)==' ' ) {
            	        input.consume();

            	    }
            	    else {
            	        MismatchedSetException mse =
            	            new MismatchedSetException(null,input);
            	        recover(mse);    throw mse;
            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt11 >= 1 ) break loop11;
                        EarlyExitException eee =
                            new EarlyExitException(11, input);
                        throw eee;
                }
                cnt11++;
            } while (true);


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end RULE_WS

    // $ANTLR start RULE_ANY_OTHER
    public final void mRULE_ANY_OTHER() throws RecognitionException {
        try {
            int _type = RULE_ANY_OTHER;
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1155:16: ( . )
            // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1155:18: .
            {
            matchAny(); 

            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end RULE_ANY_OTHER

    public void mTokens() throws RecognitionException {
        // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1:8: ( T15 | T16 | T17 | T18 | T19 | T20 | T21 | T22 | T23 | T24 | RULE_EMPTY | RULE_CHAR | RULE_UPCHAR | RULE_UPID | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
        int alt12=21;
        alt12 = dfa12.predict(input);
        switch (alt12) {
            case 1 :
                // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1:10: T15
                {
                mT15(); 

                }
                break;
            case 2 :
                // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1:14: T16
                {
                mT16(); 

                }
                break;
            case 3 :
                // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1:18: T17
                {
                mT17(); 

                }
                break;
            case 4 :
                // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1:22: T18
                {
                mT18(); 

                }
                break;
            case 5 :
                // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1:26: T19
                {
                mT19(); 

                }
                break;
            case 6 :
                // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1:30: T20
                {
                mT20(); 

                }
                break;
            case 7 :
                // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1:34: T21
                {
                mT21(); 

                }
                break;
            case 8 :
                // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1:38: T22
                {
                mT22(); 

                }
                break;
            case 9 :
                // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1:42: T23
                {
                mT23(); 

                }
                break;
            case 10 :
                // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1:46: T24
                {
                mT24(); 

                }
                break;
            case 11 :
                // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1:50: RULE_EMPTY
                {
                mRULE_EMPTY(); 

                }
                break;
            case 12 :
                // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1:61: RULE_CHAR
                {
                mRULE_CHAR(); 

                }
                break;
            case 13 :
                // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1:71: RULE_UPCHAR
                {
                mRULE_UPCHAR(); 

                }
                break;
            case 14 :
                // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1:83: RULE_UPID
                {
                mRULE_UPID(); 

                }
                break;
            case 15 :
                // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1:93: RULE_ID
                {
                mRULE_ID(); 

                }
                break;
            case 16 :
                // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1:101: RULE_INT
                {
                mRULE_INT(); 

                }
                break;
            case 17 :
                // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1:110: RULE_STRING
                {
                mRULE_STRING(); 

                }
                break;
            case 18 :
                // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1:122: RULE_ML_COMMENT
                {
                mRULE_ML_COMMENT(); 

                }
                break;
            case 19 :
                // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1:138: RULE_SL_COMMENT
                {
                mRULE_SL_COMMENT(); 

                }
                break;
            case 20 :
                // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1:154: RULE_WS
                {
                mRULE_WS(); 

                }
                break;
            case 21 :
                // ../scerbak.datamodel.ui/src-gen/scerbak/ui/contentassist/antlr/internal/InternalDatamodel.g:1:162: RULE_ANY_OTHER
                {
                mRULE_ANY_OTHER(); 

                }
                break;

        }

    }


    protected DFA12 dfa12 = new DFA12(this);
    static final String DFA12_eotS =
        "\4\uffff\1\31\1\33\2\uffff\1\33\1\41\1\43\1\33\1\43\1\23\2\uffff"+
        "\2\23\10\uffff\1\34\4\uffff\1\34\2\uffff\1\45\1\uffff\1\45\4\uffff"+
        "\2\34\2\45\2\34\1\45\2\34\1\45\1\34\1\67\1\45\1\71\3\uffff";
    static final String DFA12_eofS =
        "\72\uffff";
    static final String DFA12_minS =
        "\1\0\3\uffff\1\52\1\60\2\uffff\1\60\1\52\3\60\1\101\2\uffff\2\0"+
        "\10\uffff\1\143\4\uffff\1\160\2\uffff\1\60\1\uffff\1\60\4\uffff"+
        "\1\153\1\157\2\60\1\141\1\162\1\60\1\147\1\164\1\60\1\145\1\60\1"+
        "\40\1\60\3\uffff";
    static final String DFA12_maxS =
        "\1\ufffe\3\uffff\1\57\1\172\2\uffff\1\172\1\52\4\172\2\uffff\2\ufffe"+
        "\10\uffff\1\143\4\uffff\1\160\2\uffff\1\172\1\uffff\1\172\4\uffff"+
        "\1\153\1\157\2\172\1\141\1\162\1\172\1\147\1\164\1\172\1\145\3\172"+
        "\3\uffff";
    static final String DFA12_acceptS =
        "\1\uffff\1\1\1\2\1\3\2\uffff\1\6\1\7\6\uffff\1\17\1\20\2\uffff\1"+
        "\24\1\25\1\1\1\2\1\3\1\23\1\22\1\4\1\uffff\1\14\1\17\1\6\1\7\1\uffff"+
        "\1\12\1\11\1\uffff\1\15\1\uffff\1\16\1\20\1\21\1\24\16\uffff\1\10"+
        "\1\13\1\5";
    static final String DFA12_specialS =
        "\72\uffff}>";
    static final String[] DFA12_transitionS = {
            "\11\23\2\22\2\23\1\22\22\23\1\22\1\23\1\20\4\23\1\21\1\2\1\3"+
            "\2\23\1\1\1\7\1\11\1\4\12\17\1\6\6\23\22\14\1\12\7\14\3\23\1"+
            "\15\1\16\1\23\10\13\1\10\6\13\1\5\12\13\uff84\23",
            "",
            "",
            "",
            "\1\30\4\uffff\1\27",
            "\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\1\32\31\34",
            "",
            "",
            "\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\14\34\1\37\15\34",
            "\1\40",
            "\12\34\7\uffff\32\44\3\uffff\1\45\1\44\1\uffff\7\44\1\42\22"+
            "\44",
            "\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34",
            "\12\34\7\uffff\32\44\3\uffff\1\45\1\44\1\uffff\32\44",
            "\32\34\4\uffff\1\34\1\uffff\32\34",
            "",
            "",
            "\uffff\47",
            "\uffff\47",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\51",
            "",
            "",
            "",
            "",
            "\1\52",
            "",
            "",
            "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\16\54\1\53\13\54",
            "",
            "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54",
            "",
            "",
            "",
            "",
            "\1\55",
            "\1\56",
            "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\24\54\1\57\5\54",
            "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54",
            "\1\60",
            "\1\61",
            "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\13\54\1\62\16\54",
            "\1\63",
            "\1\64",
            "\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\3\54\1\65\26\54",
            "\1\66",
            "\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34",
            "\1\70\17\uffff\12\54\7\uffff\32\54\4\uffff\1\54\1\uffff\32\54",
            "\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34",
            "",
            "",
            ""
    };

    static final short[] DFA12_eot = DFA.unpackEncodedString(DFA12_eotS);
    static final short[] DFA12_eof = DFA.unpackEncodedString(DFA12_eofS);
    static final char[] DFA12_min = DFA.unpackEncodedStringToUnsignedChars(DFA12_minS);
    static final char[] DFA12_max = DFA.unpackEncodedStringToUnsignedChars(DFA12_maxS);
    static final short[] DFA12_accept = DFA.unpackEncodedString(DFA12_acceptS);
    static final short[] DFA12_special = DFA.unpackEncodedString(DFA12_specialS);
    static final short[][] DFA12_transition;

    static {
        int numStates = DFA12_transitionS.length;
        DFA12_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA12_transition[i] = DFA.unpackEncodedString(DFA12_transitionS[i]);
        }
    }

    class DFA12 extends DFA {

        public DFA12(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 12;
            this.eot = DFA12_eot;
            this.eof = DFA12_eof;
            this.min = DFA12_min;
            this.max = DFA12_max;
            this.accept = DFA12_accept;
            this.special = DFA12_special;
            this.transition = DFA12_transition;
        }
        public String getDescription() {
            return "1:1: Tokens : ( T15 | T16 | T17 | T18 | T19 | T20 | T21 | T22 | T23 | T24 | RULE_EMPTY | RULE_CHAR | RULE_UPCHAR | RULE_UPID | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
        }
    }
 

}